--- a/drivers/mtd/devices/m25p80.c
+++ b/drivers/mtd/devices/m25p80.c
@@ -149,8 +149,10 @@ static int m25p80_read(struct spi_nor *n
 		msg.data_nbits = m25p80_rx_nbits(nor);
 
 		ret = spi_flash_read(spi, &msg);
-		*retlen = msg.retlen;
-		return ret;
+		if (!ret) {
+			*retlen = msg.retlen;
+			return 0;
+		}
 	}
 
 	spi_message_init(&m);
